package cuiyt.algorithm.dfs;

import algorithm.TreeNode;

/**
 * @author cyt
 * @create 2020-08-27 18:00
 */
public class T530 {

    int ans = Integer.MAX_VALUE;
    TreeNode preNode = null;
    /**
     * 给你一棵所有节点为非负值的二叉搜索树，请你计算树中任意两节点的差的绝对值的最小值。
     *
     * @param args
     */
    public static void main(String[] args) {

    }



    public void dfs(TreeNode root) {
        if (root == null) {
            return;
        }
        dfs(root.left);
        /**
         * 非首次访问
         */
        if (preNode != null) {
            ans = Math.min(Math.abs(root.val - preNode.val), ans);
        }
        preNode = root;
        dfs(root.right);
    }


    int pre = -1;

    public int getMinimumDifference(TreeNode root) {
        if (root != null) {
            getMinimumDifference(root.left);
            if (pre >= 0 && root.val - pre < ans) {
                ans = root.val - pre;
            }
            pre = root.val;
            getMinimumDifference(root.right);
        }
        return ans;
    }

}
